StandfordNLP NLTK 中文工具配置教程

Python3 NLTK StandfordNLP 中文工具包配置教程

1. 必要的安装包

1
2
3
4
5
6
# 中文处理工具包 stanford-jar.zip 文件内容: `ls`
chinese.misc.distsim.crf.ser.gz stanford-ner-3.9.1.jar
chinese-distsim.tagger stanford-parser.jar
chinesePCFG.ser.gz stanford-parser-3.9.1-models.jar
data/ stanford-postagger-3.9.1.jar
slf4j-api-1.7.25.jar stanford-segmenter-3.9.1.jar

2. 调用代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import nltk

## java 环境
java_path = "D:\Program Files\Java\jdk1.8.0_162\\bin\java.exe" # java安装地址
os.environ['JAVAHOME'] = java_path
base_dir = 'D:\data\stanfordnlp\stanford-jar' # StanfordNLP 中文处理工具包的路径


## 1. 分词
#########################################################################################
from nltk.tokenize.stanford_segmenter import StanfordSegmenter
segmenter = StanfordSegmenter(
path_to_jar=os.path.join(base_dir, 'stanford-segmenter-3.9.1.jar'),
path_to_slf4j=os.path.join(base_dir, 'slf4j-api-1.7.25.jar'),
path_to_sihan_corpora_dict=os.path.join(base_dir, 'data'),
path_to_model=os.path.join(base_dir, 'data/pku.gz'),
path_to_dict=os.path.join(base_dir, 'data/dict-chris6.ser.gz')
)
sent = '这是斯坦福中文分词器测试,南京市长江大桥。我在博客园开了一个博客,我的博客名叫伏草惟存,写了一些自然语言处理的文章。'
print(segmenter.segment(sent))


## 2. 命名实体识别NER
#########################################################################################
from nltk.tag import StanfordNERTagger
chi_tagger = StanfordNERTagger(
model_filename=os.path.join(base_dir, 'chinese.misc.distsim.crf.ser.gz'),
path_to_jar=os.path.join(base_dir, 'stanford-ner-3.9.1.jar')
)
result = '四川省 成都 信息 工程 大学 我 在 博客 园 开 了 一个 博客 , 我 的 博客 名叫 伏 草 惟 存 , 写 了 一些 自然语言 处理 的 文章 。\r\n'
for word, tag in chi_tagger.tag(result.split()):
print(word,tag)


## 3. 词性标注
#########################################################################################
from nltk.tag import StanfordPOSTagger
chi_tagger = StanfordPOSTagger(
model_filename=os.path.join(base_dir, 'chinese-distsim.tagger'),
path_to_jar=os.path.join(base_dir, 'stanford-postagger-3.9.1.jar')
)
result = '四川省 成都 信息 工程 大学 我 在 博客 园 开 了 一个 博客 , 我 的 博客 名叫 伏 草 惟 存 , 写 了 一些 自然语言 处理 的 文章 。\r\n'
print(chi_tagger.tag(result.split()))


## 4. 句法分析
#########################################################################################
from nltk.parse.stanford import StanfordParser
chi_parser = StanfordParser(
os.path.join(base_dir, 'stanford-parser.jar'),
os.path.join(base_dir, 'stanford-parser-3.9.1-models.jar'),
os.path.join(base_dir, 'chinesePCFG.ser.gz')
)
sent = u'北海 已 成为 中国 对外开放 中 升起 的 一 颗 明星'
print(list(chi_parser.parse(sent.split())))


## 5. 依存句法分析
#########################################################################################
from nltk.parse.stanford import StanfordDependencyParser
chi_parser = StanfordDependencyParser(
os.path.join(base_dir, 'stanford-parser.jar'),
os.path.join(base_dir, 'stanford-parser-3.9.1-models.jar'),
os.path.join(base_dir, 'chinesePCFG.ser.gz')
)
res = list(chi_parser.parse('四川 已 成为 中国 西部 对外开放 中 升起 的 一 颗 明星'.split()))
for row in res[0].triples():
print(row)
坚持原创技术分享,您的支持将鼓励我继续创作!
0%